#include "httplib.h"

using namespace httplib;

void HelloBit(const Request &req, Response &rsp)
{
    rsp.body = "Hello Bit!";
    rsp.status = 200;// 这个可以忽略， 默认httplib会加上一个200的状态
}
void Numbers(const Request &req, Response &rsp)
{
    //matches: 存放正则表达式匹配的规则数据 /numbers/123 mathes[0]="/numbers/123", mathes[1]="123"
    std::string num = req.matches[1];
    rsp.set_content(num, "text/plain");//向rsp.body里面添加数据，并设置Content-Type类型
    rsp.status = 200;
}
void Multipart(const Request &req, Response &rsp)
{
    if(req.has_file("file1") == false) {
        rsp.status = 400;
        return;
    }
    MultipartFormData file = req.get_file_value("file1");
    std::cout << file.filename << std::endl;//区域文件名称
    std::cout << file.content << std::endl;//区域文件内容
    rsp.status = 200;
}
int main()
{
    Server server;

    //设置一个静态资源根目录---为当前目录下的www目录
    server.set_mount_point("/", "./www");

    //添加请求-处理函数映射信息
    server.Get("/hi", HelloBit);
    //正则表达式中：\d表示数字， +表示匹配前边的字符一次或多次， ()表示单独捕捉数据 /numbers/123
    server.Get("/numbers/(\\d+)", Numbers);
    server.Post("/multipart", Multipart);
    server.listen("0.0.0.0", 9090);
    return 0;
}